#define _CRT_SECURE_NO_WARNINGS 1

void rotate(int* nums, int numsSize, int k) {
     k %= numsSize;
     for(int i = 0; i < k; i++)
     {
         int tmp = nums[numsSize - 1];
         for(int j = numsSize - 1;j > 0; j--)
         {
             nums[j] = nums[j-1];
         }
         nums[0] = tmp;
     }
     return;

     k %= numsSize;
     int b = 0;
     int* arr = (int*)malloc(numsSize * sizeof(int));
     for(int i = numsSize - k; i < numsSize; i++)
     {
         arr[b++] = nums[i]; 
     }
     for(int i = 0; i < numsSize - k; i++)
     {
         arr[b++] = nums[i];
     }
     memcpy(nums,arr,numsSize * sizeof(int));
     return;

//    void swap(int* arr, int left, int right)
//    {
//        while (left < right)
//        {
//            int tmp = arr[left];
//            arr[left] = arr[right];
//            arr[right] = tmp;
//            left++;
//            right--;
//        }
//    }
//
//    k %= numsSize;
//    swap(nums, 0, numsSize - 1);
//    swap(nums, 0, k - 1);
//    swap(nums, k, numsSize - 1);
//    return;
//}

int missingNumber(int* nums, int numsSize) {
    // int n = numsSize;
    // int ret = n*(n+1) / 2;
    // for(int i = 0; i < numsSize; i++)
    // {
    //     ret -= nums[i];
    // }
    // return ret;

    int a = 0;
    for (int i = 0; i < numsSize; i++)
    {
        a ^= nums[i];
    }
    for (int i = 0; i < numsSize + 1; i++)
    {
        a ^= i;
    }
    return a;
}